package edu.yzu.testspringboot002.service;

import edu.yzu.testspringboot002.po.ActiveInfo;
import edu.yzu.testspringboot002.po.Doctor;
import edu.yzu.testspringboot002.po.Team;
import edu.yzu.testspringboot002.po.WeChatDTO;
import edu.yzu.testspringboot002.po.dto.DoctorCallInfoDTO;
import edu.yzu.testspringboot002.po.dto.DoctorQueryDTO;
import edu.yzu.testspringboot002.po.dto.PatientQueryDTO;
import edu.yzu.testspringboot002.po.dto.UserLogoDTO;
import edu.yzu.testspringboot002.po.vo.DoctorDetailVO;
import edu.yzu.testspringboot002.po.vo.DoctorInfoVO;
import edu.yzu.testspringboot002.utils.Pager;

import java.util.List;
import java.util.Map;

public interface DoctorService {
    void addDoctor(Doctor doctor);

    Doctor getDoctorById(int id);

    List<Doctor> getAllDoctor();

    void updateDoctor(Doctor doctor);



    Pager<Doctor> pageInfo(Map<String, Object> params);

    void saveOrUpdateDoctor(Doctor Doctor);

    void deleteDoctor(Integer[] id);

    Doctor getDoctor(Integer id);



    Doctor saveAppDoctor(Doctor Doctor);

    List<Doctor> getByDeptId(Long id);

    List<DoctorInfoVO> getDeptAndDoctorList(String code);

    void updateDoctorRemark(PatientQueryDTO patientQueryDTO);

    /**
     * 获取医生详细信息
     *
     * @param doctorId 医生id
     * @return {@link DoctorDetailVO}
     */
    DoctorDetailVO getDoctorDetailInfo(Integer doctorId);

    List<Doctor> getAllDoctor(String deptId, Integer doctorId);

    /**
     * 更新用户徽标
     */
    void updateUserLogo(UserLogoDTO userLogoDTO);

    List<DoctorCallInfoDTO> getDoctorCallInfo(String doctorIds);

    /**
     * 审计医生
     *
     * @param doctorQueryDTO 医生查询dto
     */
    void auditDoctor(DoctorQueryDTO doctorQueryDTO);

    /**
     * 设置团队管理员
     *
     * @param doctorQueryDTO 医生查询dto
     */
    void settingTeamAdmin(DoctorQueryDTO doctorQueryDTO);

    void initCacheDoctorDB();

    List<Map<String, Object>> getDoctorTJ();

    void pushMessage(List<Doctor> DoctorList, ActiveInfo activeInfo, Integer hasPush);

    void updateOpenId();

    List<Team> getTeamList(Integer doctorId);

    List<DoctorInfoVO> teamDoctorList(Long teamId);



    List<Doctor>  getDoctorByPhone(String phone); // 根据手机号查询医生信息




    

   // void deleteDoctor(int id);
}
